|
LIST
|
P=16F84
|
|
STAT |
EQU
|
03H
|
|
MONA |
EQU
|
05H
|
|
MONB |
EQU
|
06H
|
|
TAW |
EQU
|
0DH |
|
TAW1 |
EQU
|
0EH |
|
TA7A
|
EQU
|
0FH
|
|
MA3
|
EQU
|
10H
|
|
DAD1
|
EQU
|
11H
|
|
DAD2
|
EQU
|
12H
|
|
EEDATA
|
EQU
|
08H
|
|
EEADR
|
EQU
|
09H
|
|
ECON1
|
EQU
|
88H
|
|
ECON2
|
EQU
|
89H
|
|
TRISA
|
EQU
|
85H
|
|
TRISB
|
EQU
|
86H
|
|
Z
|
EQU
|
02H
|
|
C
|
EQU
|
00H
|
|
W
|
EQU
|
00H
|
|
S
|
EQU
|
01H
|
|
EEIF
|
EQU
|
04H
|
|
WRR
|
EQU
|
03H
|
|
WEN
|
EQU
|
02H
|
|
WR
|
EQU
|
01H
|
|
RD
|
EQU
|
00H
|
|
ORG
00
|
|
GOTO
BIDAYAH
|
|
KIRA
|
BSF
|
STAT,5
|
|
|
BSF
|
ECON1,RD
|
|
|
BCF |
STAT,5
|
|
MOVF
|
EEDATA,W
|
|
|
RETURN
|
|
KITAB
|
BSF
|
STAT,5
|
|
|
BSF
|
ECON1,WRR
|
|
|
BCF
|
ECON1,EEIF
|
|
|
MOVLW
|
55H
|
|
|
MOVWF
|
ECON2
|
|
|
MOVLW
|
AAH
|
|
|
MOVWF
|
ECON2
|
|
|
BSF
|
ECON1,WR
|
|
STANA
|
CLRWDT
|
|
|
|
BTFSS
|
ECON1,EEIF
|
|
|
GOTO
|
STANA
|
|
|
BCF
|
ECON1,EEIF
|
|
|
BCF
|
ECON1,WEN
|
|
|
BCF
|
STAT,5
|
|
|
RETURN
|
|
|
MILITH
|
MOVWF
|
TAW
|
|
FAWK1
|
MOVLW
|
D´110´
|
|
|
MOVWF
|
TAW1
|
|
FAWK2
|
NOP
|
|
|
|
NOP
|
|
|
|
NOP
|
|
|
|
NOP
|
|
|
|
CLRWDT
|
|
|
|
NOP
|
|
|
|
DECFSZ
|
TAW1
|
|
|
GOTO
|
FAWK2
|
|
|
DECFSZ
|
TAW
|
|
|
GOTO
|
FAWK1
|
|
|
RETURN
|
| | |
|
جميل جدا , الميكرو يطبق الأوامر , واحد تلو الآخر
( بالتوالي ) , حتى يجد كلمة
goto أو
call فيقفز الى المكان الذي حدد له
, إذا وجد كلمة return سيعود ليطبق الأمر الذي يلي كلمة call , للتوضيح أكثر , لنأخذ برنامجنا هذا على صعيد
المثال ..... الميكرو سيقرأ أول سطر الذي يعرف نوعه
list ثم يبدأ بقرائة الموازات سطرا
وراء الآخر حتى يصل الى أمر GOTO
BIDAYAH
فسيقفز الى السطر الذي أمامه كلمة BIDAYAH وأين هو سنكتبه
الآن .
| | |
|
BIDAYAH
BSF
STAT,5
MOVLW
FBH
MOVWF
TRISA
MOVLW
BFH
MOVWF
TRISB
BCF
STAT,5
BCF
MONB,6
BCF MONA,2
MOVLW
D`50´
CALL
MILITH
| | |
|
جيد ماذا نقول هنا ؟ , نقول إذهب الى البنك الثاني
, حمل الرقم FB هيكس في سجل W , وما هو هذا
الرقم ثنائيا , ( إذهب إلى درسنا الأنظمه الرقميه ,
وحاول معرفة الجواب, وإذا وصلت الى نتيجة أنه
يساوي "11111011" ) تكون فعلا قد إستوعبت هذا الدرس
.
الآن نقول حمل
هذا الرقم في سجل TRISA وبذلك نكون قد حددنا ما هي الأرجل التي
ستستخدم
كدخول أو خروج , ( إذهب الى درسنا منفذ أ و منفذ ب
) وستعلم أننا إخترنا فقط البين أو الرجل
MONA,2 كخروج , لماذا ؟ لأن هذا البين هو الذي سيتحكم
بالريلاي الذي يفتح ويغلق لنا الخط
بعدها وبنفس الطريقه نقول نريد
الأرجل
التابعه لمنفذ ب
كلها دخول ما عدا
MONB,6 ,طبعا
أصبحت تعرف كيف فعلنا ذلك , لماذا ما عدا هذا البين
؟ لأنه هو الذي سيتحكم بريلاي
المروحه.
إرجع إلى البنك الأول
بعدها نقول تأكد لنا أن كلا الريلاي مطفئ .
ثم نقول , يا
حبيب قلبي يا ميكر وين طاير , إستنى خمسين ميليثانيه بس ,
فقط , لا غير كما تريد | | |
|
GARIB
CLRF
EEADR
CALL
KIRA
MOVWF
TA7A
BTFSC
TA7A,0
GOTO
YASHTAGIL
BCF
MONB,6
GOTO
GARIB2
YASHTAGIL BSF
MONB,6
GARIB2
BTFSS
MONA,3
GOTO
GARIB | | |
|
وين....وين.... نعم
أخي معك ...ليش نعسان ....شوفلك شي كاسة شاي .... وما بدك
تعزمني .... لا
تعزمني.... بس لا
تتكاسل.... من هنا طريق تحرير فلسطين إنشاءالله....على
فكره أصدقائي تحيه الى
المهندس الإلكتروني
العربي المصري الذي كتب إلي قائلا ....( يروه بعيدا ونراه
قريبا إنشاءالله )
كذلك تحية إجلال
وإحترام لخمسة ألاف عالم عراقي .... يمثلون الهدف الوحيد
....لحملة الشر العدوانيه
الصهيونيه بلباس
أمريكي ....فتحيه لكم وللشعب العراقي البطل .
جيد جدا ... نقول
هنا يا أخي الحبيب , ضع لنا سجل
EEADR
صفوره ( صفره ) . ونحن نعلم أن
هذا السجل يحمل
عنوان أو مكان السجلات الموجوده في ال EEPROM والتي تبدأ من 00H إلى
3FH وعددها 64 . إذا
مطلبنا هو أول سجل في الذاكره هذه. ثم ندعو سوب روتين
القرائه . الذي
سيقرأ لنا , أول
سجل بالتحديد ويضعه في w جميل جدا ....
أنت معي طبعا....إذا لا عد القرائه مره
وإثنين وثلاثه
.
الآن نحرك ما هو
في
w الى سجل سميناه نحن TA7A مشتق من كلمة تحكم . ثم نقول للميكرو
إفحص لي أول بيت (
BIT ) في سجل TA7A
فإذا وجدته صفر ...إفعل التالي
إقفز الأمر
الذي يلي هذا
إطفئ
المروحه
إذهب الى
السطر الذي أمامه كلمة جرب 2
شوف إذا رن
الجرس , إذا نعم أقفز الأمر الذي يلي هذا ( وبذلك نكون قد
قفزنا الى ما سنكتبه لاحقا)
وإذا لم
يرن إذهب إلى
GARIB فبهذا سيبقى الميكرو
يراوح مكانه حتى يرن الجرس .
أما في الحاله
الثانيه ( إذا وجد TA7A يختلف عن صفر )
إذهب إلى
السطر الذي أمامه كلمة YASHTAGIL شغل المروحه ,
إفحص إذا
رن الجرس , إذا فعل فإقفز , وإذا لا إذهب مجددا الى GARIB وراوح مكانك حتى
يرن
لا زلت معي؟ |
| |
|
WAKIT
BSF
MONA,2
MOVLW D´40´
MOVWF
DAD1
BARMIH1
MOVLW D
`250`
MOVWF
DAD2
BARMIH2
MOVLW
01H
CALL
MILITH
BTFSC
MONB,4
GOTO
SHIFRA
DECFSZ
DAD2,S
GOTO
BARMIH2
DECFSZ
DAD1,S
GOTO
BARMIH1
BCF
MONA,2
GOTO
BIDAYAH | | |
|
تذكر معي ما
كتبناه سابقا , قلنا أن الميكرو سيراوح مكانه حتى يرن
الجرس , إذا رن سيقفز الى ما كتبناه
الآن .....
حيث نقول إفتح خط التلفون ....حمل لنا الرقم أربعين في
سجل
DAD1 والرقم 250 في سجل
DAD2 .....إنتظر ميليثانيه واحده ..... بعدها إفحص
لي إذا أخبرك ال 8870 بأنها إستلم أي رقم ( تذكر
صديقي نحن
قلنا أن 8870 لديه بين أو رجل تصبح واحد عندما يستلم أي
رقم وصفر في حل لم يستلم
وهذا البين
وصلناه على
MONB4 ) فإذا أخبرك بنعم
إذهب الى السطر الذي أمامه كلمة SHIFRA
( سنكتبها
لاحقا ) وإذا أخبرك ب لا نقص من سجل
DAD2 واحد , وخبئ النتيجه في نفس
السجل
وبنفس الوقت
إفحص لي هذا السجل , هل هو صفر , إذا كان كذلك فإقفز أي
سكر الخط وإرجع الى
BIDAYAH ( الى أول البرنامج من جديد
)
وإذا لم
يكن صفرا .... إذهب إلى
BARMIH2 وإفعل كل ما طلبته
منك من جديد حتى يصبح صفر
وبذلك تكون قد
مرت العشر ثواني .....فيصبح صفر بلا شك وتغلق الخط غصب عنك
إذا لم تستلم رقما
.....ما رأيك
؟ واضح وضوح الشمس .
لا مش واضح
قفزت شرح البرمه الأولى جيد جدا معناها إنك معي
وفهمان الموضوع |
| |
|
SHIFRA
MOVF
MONB,W
ANDLW
OFH
MOVWF
MA3
XORLW
05H
BTFSS
STAT,Z
GOTO
SAKIR
BSF
TA7A,0
GOTO
KAZIN
SAKIR
MOVF
MA3,W
XORLW
06H
BTFSS
STAT,Z
GOTO
BARMIH2
BCF
TA7A,0
| | |
|
إتفقنا أن الميكرو سيأتي إلى هنا في
حال إستلم
إشاره من 8870 على أنه في رقم موجود ....فما سيفعل
إذا ؟ .... سيقرأ هذا الرقم ويضعه
في W ويطبق عليه
عملية
ANDLW مع الرقم
0FH وهذا
الرقم
يوازي ثنائيا { 00001111 } الآن إذهب الى
دروس الأوامر وتعرف ما يحدث بكل تأكيد .
بعد تطبيق هذه العمليه خبئ لنا الرقم في
سجل
MA3 الذي إشتقينا اسمه من
كلمة معلومه
ثم طبق عملية XORLW
مع الرقم
05H .... الآن أعتقد أنك
فهمت قصدي ..... لا يا شيخ ....طيب
بهذا نقول .... شوف لي إذا كان هذا الرقم
يساوي خمسه أو لا .... طيب وإذا كان خمسه شو بصير ...
علم Z في سجل ستاتوس سيصبح
واحد ... وإذا لا صفر .
فإذا كان واحد ... ضع واحد في أول بيت من
سجل TA7A وإذهب إلى
KAZIN
(خزن) سنكتبها لاحقا
وإذا كان صفر فإن الرقم مختلف ,
فإذهب الى SAKIR (سكر
) وما ستفعل هناك ؟ ....التالي
ضع سجل معلومه MA3 في
W شوف إذا يساوي
سته
نعم ..... ضع صفر في
أول بيت من سجل تحكم
لا ..... إذهب
الى برمه إثنين وعد الكره من جديد
بكلمات أخرى صديقي المحترم .... هنا نضع
كلمة السر... إذا كانت 5 ستشتغل المروحه وإذا سته
ستطفئ . أنا لا أريد تعقيد الأمور أكثر
.... ولكن بإمكانك بقليل من الجهد وضع سوب روتين فيها
كلمة سر من أربع أو كذا رقم .... ولا أشك
بأنك ستخرج من هنا قبل أن تصبح أكبر مبرمج للميكرو في
العالم ........ أوه
أوه
علينا
ليش عم تظحك ......
|
| |
|
KAZIN
CLRF
EEADR
MOVF
TA7A,W
MOVWF
EEDATA
CALL
KITAB
MOVLW
D`50`
CALL
MILITH
BTFSC
TA7A,0
GOTO
DAWER
BCF
MONB,6
GOTO
ITLA3
DAWER
BSF
MONB,6
ITLA3
GOTO
BARMIH2
END
|
| |
|
هذه الأوامر ليست جديده
وتعرفها كلها, نخبأ المعلومه في ال EEPROM كلما تغيرت , ونعود من جديد
إلى التوقيت . فبرنامجنا إنتها
مبروك وكل برنامج وأنت بخير , فمن هنا وصاعدا ستكون
برامجنا بدون
شرح , لأنني أصبحت أعتبرك
محللا محترما . الأمر بسيط ويحتاج الى قليل من الصبر
والمثابره , الحقيقه
أن الميكرو يفتح أمامنا عالما
لم نرله من قبل , فبقليل من التفكير وعدم الخوف من الخطأ
والإبداع تصل
الى ما تريد . أنا شخصيا أفضل
جيل هاوي مبدع , على أن يكون الهاوي فقط مصلح تلفزيونات أو
غيره.
سأضرب لك مثلا ,
وبينما أنا أركب هذه الدائره وأجربها وهي تعمل بشكل جيد ,
إكتشفت أمرا لم أكن
أعرفه من قبل , هو التالي أن
إرسال نغمات
DTMF بين تلفون وآخر , لا تصل
التلفون الآخر فقط
عندما تفتح الخط . بل منذ بدأ
الجرس بالرنين . أي أن الإتصال الفعلي بين تلفونين هي
عندما يرن أول
رنه , هذا إكتشاف عظيم جدا
سأبيعك الفكره التاليه بناء على ما سردته .... وثمنها شكرا
فقط ...
وأن تخبرني إذا أنجزتها .....
لكي لا نكون أنانيين ..... ويتعلمها الغير.
في تجولي في كثير منم المواقع
, وجدت دوائر تسجيل مكالمات . لاسلكي صغير وتتنصت وكثير من
الصرعات المشابه , وكلها هدفها
المكالمه بحد ذاتها .... أي أننا سنعلم ما يقولون عندما
يتكلمون على
التلفون .
فكرتنا تختلف تماما , نريد أن
نعرف ماذا يجري من كلام في منزلنا بشكل عادي ,
باللأحرى ما يدور
من حديث في غرفة الإستقبال ,
إذا نحن نريد صنع دائره. توضع في داخل جهاز التلفون
نفسه.
إذا رن الجرس أخرت سماع رناته
رنه واحده أو إثنين
. كيف ؟ بالمتحكم الصغير وريلاي يوصل على
دائرة السبيكر مكبر الصوت حيث
يصل صوت الجرس .
إذا وصلت كلمة السر خلال خلال
هذه الرنتين
سيفتح الخط حتى تأتي كلمة سر إغلاقه .
دائره صغيره لمضخم عمليات مع
مكيروفون صغير موصوله على خط التلفون . وتسمع الإبره إذا
سقطت في الغرفه .
المشروع بسيط .... وما شرحناه
يساعدك كثيرا
ويمكنك أن تنادي الى البيت
وقبل مروور رنتين تضفط كلمة السر فتسمع ما تقوله حماتك
لإمرأتك عنك
وإذا مرت الرنتين الميكرو سيصل
السماعه فيسمعون الجرس ويجاوبون عاديا .
ما رأيك ..... ولكن تضرب حماتك
كثير , كثير بسببي ....عيب ...... ها ها ها ها ها ها ها ها ها
ها ها | | |
|
تطبيق
البرنامج في الأم بي لاب
|
|